#ifndef __CLIENTFUNC_H_
#define __CLIENTFUNC_H_

#include <stdbool.h>
#include "../GlobalMessage.h"
#include <time.h>
/* 分包发送结构体 */
struct PacketFile;
typedef struct PacketFile PackFile;

struct FileSystem;
typedef struct FileSystem FileSys;

/* 功能选择界面 */
int Interface();
/* 登录界面 */
int LoginFace();

/* 注册 */
MSG SignUp(char *MyName);
/* 是否注册成功 */
bool IsSignUpSuccess(MSG *m);

/* 登录 */
MSG Login(char *MyName);
/* 是否登录成功 */
bool IsLoginSuccess(MSG *m);

/* 私聊 */
MSG ChatToClient();

/* 广播 */
MSG ChatBroadCast();

/* 查看在线用户 */
MSG GetServerOnlineList();

/* 解析列表字符串 */
void ShowOnlineList(MSG *m);

/* 文件发送 */
MSG SendFile();
/* 从路径中获取文件名称 */
char *GetFileNameFromPath(const char *filePath);
/* 写数据到本地文件 */
void WriteToLocal(MSG *m);
/* 上传文件 */
MSG UpLoadFile();
/* 下载文件 */
MSG DownloadFile();
/* 显示文件列表 */
void ShowFIleList(MSG *m);


/* 网盘界面 */
int CloudInterface();

/* 好友管理界面 */
int FriendFace();
/* 加好友 */
MSG AddFriend();
/* 是否同意好友 */
MSG IsFriendOk();
/* 删除好友 */
MSG DelFriend();

/* 私聊消息显示 */
void MessageShow(const char* content, int flag);

/* 私聊界面 */
void PrivateChatFace(MSG *m, const char *MyName);

/* 群聊管理界面*/
int GroupManageFace();
/* 群聊创建 */
MSG GreateGroup();
/* 删除群聊 */
MSG DeleteGroup();
/* 加入群聊 */
MSG JoinGroup();
/* 退出群聊 */
MSG LeaveGroup();
/* 参加群聊 */
MSG ChatGroup();
/* 群聊聊天界面 */
void GroupChatFace(MSG *m);

PackFile *PacketFileInit(const char *filePath);
void ReadFromFile(PackFile *f, void *p, int *size); // 此处的size定义为指针是因为size的值肯会因为过多而改变
bool IsFileEnd(PackFile *f);
void ClearPacketFile(PackFile *f);

//释放二维数组
void FreeStrList(char **strList, int size);
/* 自定义字符串切割函数 */
char **Split(const char *str, const char *delim, int *size); // 参数：目标字符串， 切割标识符， 切割的字符串个数




// FileSys* FileSystemInit(const char* DirPath);

// //在根目录下创建新文件夹
// bool CreateNewDirInFs(FileSys *fs,const char *DirName);

// //在根目录下的文件夹内写入文件数据
// void WriteFileToFs(FileSys *fs,const char * DirName,const char *fileName,void *p,size_t size);
#endif